package com.hydra.wiki.parameter.dao;

import com.hydra.wiki.core.sql.query.DBRule;
import com.hydra.wiki.core.sql.query.DataQuery;
import com.hydra.wiki.core.sql.result.DataResult;
import com.hydra.wiki.parameter.domain.Aloneparameterlocal;
import org.hibernate.Session;

import java.util.List;
import java.util.Map;

public interface AloneparameterlocalDaoInter {
    public void deleteEntity(Aloneparameterlocal aloneparameterlocal);

    public Aloneparameterlocal getEntity(String aloneparameterlocalid);

    public Aloneparameterlocal insertEntity(
            Aloneparameterlocal aloneparameterlocal);

    public int getAllListNum();

    public void editEntity(Aloneparameterlocal aloneparameterlocal);

    public Session getSession();

    /**
     * 执行一条用户个性化参数查询语句
     */
    public DataResult runSqlQuery(DataQuery query);

    /**
     * 条件删除用户个性化参数实体，依据对象字段值(一般不建议使用该方法)
     *
     * @param rules 删除条件
     */
    public void deleteEntitys(List<DBRule> rules);

    /**
     * 条件查询用户个性化参数实体，依据对象字段值,当rules为空时查询全部(一般不建议使用该方法)
     *
     * @param rules 查询条件
     * @return
     */
    public List<Aloneparameterlocal> selectEntitys(List<DBRule> rules);

    /**
     * 条件修改用户个性化参数实体，依据对象字段值(一般不建议使用该方法)
     *
     * @param values 被修改的键值对
     * @param rules  修改条件
     */
    public void updataEntitys(Map<String, Object> values, List<DBRule> rules);

    /**
     * 条件合计用户个性化参数:count(*)
     *
     * @param rules 统计条件
     */
    public int countEntitys(List<DBRule> rules);

    /**
     * 获得用户对象
     *
     * @param userId
     * @param parameterId
     * @return
     */
    public Aloneparameterlocal getEntityByUser(String userId, String parameterId);
}